package com.ruoyi.product.mapper;

import java.util.List;

import com.ruoyi.product.domain.ProductCart;
import com.ruoyi.product.dto.CartResDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 购物车Mapper接口
 *
 * @author tanfp
 * @date 2021-01-02
 */
public interface ProductCartMapper {
    /**
     * 查询购物车
     *
     * @param keyId 购物车ID
     * @return 购物车
     */
    public ProductCart selectProductCartById(Long keyId);

    /**
     * 查询购物车列表
     *
     * @param productCart 购物车
     * @return 购物车集合
     */
    public List<ProductCart> selectProductCartList(ProductCart productCart);

    /**
     * 新增购物车
     *
     * @param productCart 购物车
     * @return 结果
     */
    public int insertProductCart(ProductCart productCart);

    /**
     * 修改购物车
     *
     * @param productCart 购物车
     * @return 结果
     */
    public int updateProductCart(ProductCart productCart);

    /**
     * 删除购物车
     *
     * @param keyId 购物车ID
     * @return 结果
     */
    public int deleteProductCartById(Long keyId);

    /**
     * 批量删除购物车
     *
     * @param keyIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteProductCartByIds(String[] keyIds);

    public int deleteProductCartByOrdersProductIds(@Param("userId") Long userId, @Param("productIds") List<String> productIds);
    /**
     * 通过价格id列表查询购物车列表
     * @param productId
     * @param userId
     * @param priceIds
     * @return
     */
    List<ProductCart> selectByPriceIds(@Param("productId") Long productId,@Param("userId") Long userId,@Param("priceIds") List<String> priceIds);

    /**
     * 删除购物车中的商品
     * @param userId
     * @param productIds
     */
    void removeCart(@Param("userId") Long userId,@Param("productIds") List<String> productIds);

    void updateStatus(@Param("selectFlag") Integer selectFlag,@Param("cartIds") List<Long> cartIds);

    void updateAllStatus(@Param("userId") Long userId,@Param("selectFlag") Integer selectFlag);

    /**
     * 通过商品id获取商品列表
     * @param productIds
     * @return
     */
    List<CartResDTO> selectProductListByIds(List<Long> productIds);

    /**
     *
     * @param userId
     * @return
     */
    List<ProductCart> selectProductCartListByUserId(@Param("userId") Long userId);

    List<ProductCart> selectProductCartOrdersListByUserId(@Param("userId") Long userId);
}
